package com.hongtech.modules.common;

import com.hongtech.common.bean.Token;
import com.hongtech.common.constant.Constant;
import com.hongtech.common.util.TokenUtil;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 基础控制器
 */
public class BaseController {

    protected Logger logger = LoggerFactory.getLogger(this.getClass());

    /**
     * 获取分页页码
     *
     * @param limit  条数
     * @param offset 游标
     * @return 返回页数
     */
    protected Integer getPageNo(Integer limit, Integer offset) {
        return offset == 0 ? 1 : offset / limit + 1;
    }

    /**
     * 获取分页参数
     *
     * @param limit  条数
     * @param offset 游标
     * @return 返回页数
     */
    protected Map<String, Object> getPageParam(Integer limit, Integer offset) {
        Map<String, Object> pageParams = new HashMap<>();
        pageParams.put(Constant.PAGE, getPageNo(limit, offset));
        pageParams.put(Constant.LIMIT, limit);
        return pageParams;
    }

    /**
     * 获取分页参数
     *
     * @param page 页码
     * @param size 分页数
     * @return 返回页数
     */
    protected Map<String, Object> getPage(Integer page, Integer size) {
        Map<String, Object> pageParams = new HashMap<>();
        pageParams.put(Constant.PAGE, page);
        pageParams.put(Constant.LIMIT, size);
        return pageParams;
    }

    /**
     * 返回登录 Token
     */
    protected Token getSSOToken(HttpServletRequest request) {
        Token tk = TokenUtil.getToken(request);
        if (tk == null) {
            throw new RuntimeException("用户不存在请重新登录！");
        }
        return tk;
    }

    /**
     * 重定向至地址 url
     *
     * @param url 请求地址
     * @return 返回跳转链接
     */
    protected String redirectTo(String url) {
        return "redirect:" + url;
    }

}
